<?php
/*
 * Informa��es referentes ao Fornecedor de Materiais
 * Materiais s�o associados a Fornecedores.
 */

//if( !function_exists('__autoload') )
//{
 //   function __autoload($class_name) {
  //  require_once $class_name . '.php';
   // }
//}
require_once 'FornecedorDAO.php';
class Fornecedor
{
      private $id;                   // Chave-prim�ria no banco de dados do fornecedor
      private $cnpjCpf;              // CNPJ/CPF do fornecedor
      private $nome;                 // Nome do fornecedor
      private $telefone;             // Telefone para contato do fornecedor
      private $telefoneComercial;	 // Telefone para contato do fornecedor
      private $fax;					 // Fax para contato do fornecedor
      private $celular;              // Celular para contato do fornecedor
      private $estado;               // Estado de residencia do fornecedor
      private $cidade;               // Cidade de residencia do fornecedor
      private $email;                // Email de contato do fornecedor
      private $site;                 // Site de informa��o do fornecedor
      private $razaoSocial;          // Raz�o social da empresa
      private $especificacao;        // array bidimencional da categoria/servi�o do fornecedor
      private $dao;

      public function __set( $var, $val )
      {
             $this->$var = $val;
      }

      public function &__get( $var )
      {
             return $this->$var;
      }
      
      public function __construct( $id = NULL, $cnpjCpf = NULL, $nome = NULL, $telefone = NULL,$telefoneComercial=NULL, $fax=NULL, $celular = NULL, $estado = NULL,
                                   $cidade = NULL, $email = NULL, $site = NULL, $razaoSocial = NULL, $especificacao = NULL )
      {
             $this->id = $id;
             $this->cnpjCpf = $cnpjCpf;
             $this->nome = $nome;
             $this->telefone = $telefone;
             $this->telefoneComercial = $telefoneComercial;
             $this->fax = $fax;
             $this->celular = $celular;
             $this->estado = $estado;
             $this->cidade = $cidade;
             $this->email = $email;
             $this->site = $site;
             $this->razaoSocial = $razaoSocial;
             $this->especificacao = $especificacao;
             
             $this->dao = new FornecedorDAO();
      }
      
     /**
	 * Insere um registro no banco de dados na tabela t_fornecedor com os dados do objeto.
	 * @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.	 
    */
	public function CadastrarFornecedor( )
	{
		$resultado = $this->dao->CadastrarFornecedor( $this );
		return $resultado;
	}

	/**
	 * Altera o registro no banco de dados na tabela t_fornecedor associado ao objeto.
	 * @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
	*/
	public function AlterarFornecedor(  )
	{
		$resultado = $this->dao->AlterarFornecedor( $this );
		return $resultado;
	}

	/**
	 * Exclui um registro no banco de dados da tabela t_fornecedor.
	 * @param $fornecedorId - Chave-prim�ria no banco de dados do fornecedor.
	 * @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
	*/
	public function RemoverFornecedor( $fornecedorId )
	{
		$resultado = $this->dao->RemoverFornecedor( $fornecedorId );
		return $resultado;
	}
      
	/**
	 * Carrega da tabela t_fornecedor o registro referente a chave-prim�ria $fornecedorId.
	 * Transforma o registro retornado do banco de dados em um objeto Fornecedor com essas informa��es.
	 * @param $fornecedorId - Chave-prim�ria no banco de dados do fornecedor.
	 * @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
	*/
	public function CarregarFornecedor( $fornecedorId )
	{
		$resultado = $this->dao->CarregarFornecedor( $fornecedorId );
		return $resultado;
	}
	
	/**
	 * Carrega todos os registros da tabela t_fornecedor. 
	 * Os registros retornados do banco de dados ser�o transformados em objetos do tipo Fornecedor e retornados em um array.
	 * @return - Retorna um array de objetos do tipo Fornecedor caso a opera��o seja efetuada com sucesso, caso contr�rio retorna FALSE.
    */
	public function CarregarFornecedores( )
	{
		$resultado = $this->dao->CarregarFornecedores( );
		return $resultado;
	}

    /**
	 * Carrega todos os Fornecedores da especifica��o $tipo com chave-prim�ria $especificacaoId.
	 * @param $especificacaoId - Chave-prim�ria da especifica��o informada.
	 * @return Retorna um array de objetos Fornecedor caso a consulta ao banco de dados seja efetuada com sucesso ou FALSE em caso contr�rio.
	 * @todo Transformar esse m�todo em est�tico.
	*/
	public function CarregarFornecedoresPorCategoria( $categoriaId )
	{
		$resultado = $this->dao->CarregarFornecedoresPorCategoria( $categoriaId );
		return $resultado;
	}
}
?>